package swimv2.ejb.util;

public class ControlloreStringhe {
	/**
	 * Controlla che la stringa passata sia compresa tra 6 e 24 caratteri. Può inoltre contenere solo lettere, numeri 
	 * e i caratteri speciali . _ - che non possono essere usati come primo o ultimo carattere.
	 * esempio: "admin_89" è accettata; "admin 89" non è accettata.
	 */
	// per usernameUtente e passwordUtente
	public static boolean userOPassUtenteOk(String s) {
		if(s==null)
			return false;
		if(s.length()<6 || s.length()>24)
			return false;
		if(	s.charAt(0)=='_' || s.charAt(0)=='-' || s.charAt(0)=='.' || 
			s.charAt(s.length()-1)=='_' || s.charAt(s.length()-1)=='-' || s.charAt(s.length()-1)=='.' )
				return false;
		for (int i=0; i<s.length(); i++)
	    	if (! (Character.isLetterOrDigit(s.charAt(i)) || s.charAt(i)=='_' || s.charAt(i)=='-' || s.charAt(i)=='.') )
	        	return false;
	    return true;
	}
	
	/**
	 * Controlla che la stringa passata sia compresa tra 1 e 255 caratteri e contenenga SOLO lettere e il carattere speciale 'space' 
	 * che non può essere usato come primo o ultimo carattere.
	 * esempio: "Gregorio Andrea" è accettata; " Gregorio" non è accettata.
	 */
	// per nomeUtente e cognomeUtente
	public static boolean nomeOCognomeUtenteOk(String s) {
		if(s==null)
			return false;
		if(s.length()==0 || s.length()>255)
			return false;
		if(s.charAt(0)==' ' || s.charAt(s.length()-1)==' ') //non può cominciare o finire con uno spazio
				return false;
		for (int i=0; i<s.length(); i++)
	    	if (! (Character.isLetter(s.charAt(i)) || s.charAt(i)==' ') )
	        	return false;
	    return true;
	}
	
	/**
	 * Controlla che la stringa passata sia compresa tra 1 e 255 caratteri e contenenga SOLO lettere, numeri e i caratteri speciali 'space' . _ - 
	 * che non possono essere usati come primo o ultimo carattere.
	 * esempio: "consegna 1" e "team_1" sono accettate; ".team" non è accettata.
	 */
	// per nomeTeam, nomeConsegna e nomeProgetto
	public static boolean nomeOggettoOk(String s) {
		if(s==null)
			return false;
		if(s.length()==0 || s.length()>255)
			return false;
		if(	s.charAt(0)==' ' || s.charAt(0)=='_' || s.charAt(0)=='-' || s.charAt(0)=='.' || 
			s.charAt(s.length()-1)==' ' || s.charAt(s.length()-1)=='_' || s.charAt(s.length()-1)=='-' || s.charAt(s.length()-1)=='.' )
				return false;
		for (int i=0; i<s.length(); i++)
	    	if (! (Character.isLetterOrDigit(s.charAt(i)) || s.charAt(i)==' ' || s.charAt(i)=='_' || s.charAt(i)=='-' || s.charAt(i)=='.') )
	        	return false;
	    return true;
	}
	
	/**
	 * Controlla che la stringa passata sia compresa tra 1 e 65535 caratteri e NON contenga i caratteri speciali < >
	 * esempio: "< Ciao >" non è accettata; "Ciao " è accettata. 
	 */
	// per descrizioneConsegna e descrizioneProgetto
	public static boolean descrizioneOk(String s) {
		if(s==null)
			return false;
		if(s.length()==0 || s.length()>65535)
			return false;
		for (int i=0; i<s.length(); i++)
	    	if(s.charAt(i)=='<' || s.charAt(i)=='>')
	        	return false;
	    return true;
	}
}